home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 5.3 KB | 181 lines |
- 10 CLS:KEY OFF
- 20 REM WRITTEN BY W.A.BURTON NOV.1977
- 30 REM ADAPTED FOR IBM PC BY CHARLIE VELLA, 1983
- 40 PRINT CHR$(26) : WIDTH 80
- 50 PRINT TAB(20); "*** 1500 GAME ***"
- 60 PRINT : PRINT : PRINT
- 70 INPUT " DOES ANYONE NEED INSTRUCTIONS"; A$
- 80 IF LEFT$(A$,1)="Y" THEN GOSUB 1410
- 90 CLEAR : BL$=" " : GF=0
- 100 PRINT CHR$(26)
- 110 INPUT " HOW MANY PLAYERS (2 TO 7)"; P
- 120 PRINT CHR$(26)
- 130 IF P<2 OR P>7 OR P<>INT(P) THEN PRINT "WRONG !!"; : GOTO 110
- 140 DIM PL$(P), PS(P), DI(3), Q(P)
- 150 FOR X=1 TO P
- 160 PRINT "PLAYER #"; X; : INPUT "WHAT IS YOUR NAME "; PL$(X)
- 170 GOSUB 1080 : A=0
- 180 NEXT X
- 190 GOSUB 1190
- 200 '
- 210 '
- 220 '
- 230 REM MAIN MODULE
- 240 PRINT "HIT RETURN TO PLAY" :
- 250 A$=INKEY$:IF A$="" THEN 250
- 260 TF=0 : TP=0
- 270 GOSUB 540
- 280 GOSUB 580
- 290 GOSUB 650
- 300 IF Q(CO)=0 AND (TP+PS(CO))>=250 THEN Q(CO)=1 : ELSE 330
- 310 PRINT PL$(CO); ", YOU'RE QUALIFIED"
- 320 PS(CO)=PS(CO)+TP : GOTO 400
- 330 IF Q(CO)=1 THEN 370
- 340 IF Q(CO)=0 AND TF=0 THEN 270
- 350 IF Q(CO)=0 AND TF=1 THEN PRINT "SORRY, "; PL$(CO); ", YOU BUSTED" ELSE 390
- 360 PRINT : GOTO 390
- 370 IF TF=1 THEN PRINT TAB(15); "BUSTED" ELSE 460
- 380 PRINT
- 390 PS(CO)=PS(CO)+TP
- 400 CO=CO+1
- 410 IF CO>P THEN CO=1
- 420 PRINT PL$(CO); ", HIT RETURN FOR YOUR TURN"
- 430 A$=INKEY$:IF A$="" THEN 430
- 440 GOSUB 990
- 450 GOTO 260
- 460 A$="TRAP"
- 470 INPUT " DO YOU WANT TO ROLL AGAIN "; A$ : PRINT
- 480 IF LEFT$(A$,1)="Y" THEN 270
- 490 IF LEFT$(A$,1)="N" THEN 390
- 500 PRINT "TRY AGAIN !!"; : GOTO 460
- 510 '
- 520 '
- 530 '
- 540 REM THIS 'ROLLS' THE DICE & CHECKS FOR 'TRIPLES'
- 550 FOR X=1 TO 3
- 560 DI(X)=INT(RND(1)*6)+1
- 570 NEXT
- 580 REM CHECK FOR 'TRIPS'
- 590 TR$=""
- 600 IF DI(1)=DI(2) AND DI(2)=DI(3) THEN TR$=" ** TRIPLE **"
- 610 RETURN
- 620 '
- 630 '
- 640 '
- 650 REM THIS PRINTS OUT PLAYER'S SCORE
- 660 PRINT PL$(CO); ", YOUR ROLL WAS";
- 670 PRINT BL$; DI(1); BL$; DI(2); BL$; DI(3); TR$
- 680 PRINT : GOSUB 750
- 690 PRINT TAB(15); "YOUR SCORE FOR THIS TURN "; TP
- 700 IF Q(CO)=0 THEN PRINT
- 710 RETURN
- 720 '
- 730 '
- 740 '
- 750 REM THIS COMPUTES PLAYER'S SCORE
- 760 IF TR$<>"" THEN 880
- 770 IF DI(1)=5 THEN TP=TP+50
- 780 IF DI(2)=5 THEN TP=TP+50
- 790 IF DI(3)=5 THEN TP=TP+50
- 800 IF DI(1)=6 THEN TP=TP+100
- 810 IF DI(2)=6 THEN TP=TP+100
- 820 IF DI(3)=6 THEN TP=TP+100
- 830 IF DI(1)<5 AND DI(2)<5 AND DI(3)<5 THEN TF=1 : TP=0 : RETURN
- 840 GOTO 920
- 850 '
- 860 '
- 870 '
- 880 REM SCORING FOR 'TRIPLES'
- 890 X=DI(1)*100
- 900 IF X<500 THEN TP=0 : TP=TP-X : GOTO 920
- 910 TP=TP+X
- 920 IF TP<50 THEN TF=1
- 930 EG=PS(CO)+TP
- 940 IF EG>=1500 THEN GF=1 : GOTO 1260
- 950 RETURN
- 960 '
- 970 '
- 980 '
- 990 REM PRINT SCORES TO DATE
- 1000 IF GF=0 THEN PRINT "GAME SCORE"; ELSE PRINT "FINAL SCORE";
- 1010 FOR X=1 TO P
- 1020 PRINT TAB(15); PL$(X); TAB(27); PS(X)
- 1030 NEXT X : PRINT
- 1040 RETURN
- 1050 '
- 1060 '
- 1070 '
- 1080 REM 'SEED' RANDOM NUMBER GENERATOR
- 1090 FOR X1=1 TO LEN(PL$(X))
- 1100 A=A+ASC(MID$(PL$(X),X1,1))
- 1110 NEXT X1
- 1120 A=A MOD 137
- 1130 FOR X1=1 TO A
- 1140 A1=RND(1) : A1=RND(-X1)
- 1150 NEXT X1 : RETURN
- 1160 '
- 1170 '
- 1180 '
- 1190 REM THIS DECIDES WHO WILL GO FIRST
- 1200 X=INT(RND(1)*P)+1
- 1210 PRINT CHR$(26) : PRINT PL$(X); ", YOU WILL START THIS GAME" : PRINT : PRINT
- 1220 CO=X : RETURN
- 1230 '
- 1240 '
- 1250 '
- 1260 REM WIN ROUTINE
- 1270 PRINT CHR$(26)
- 1280 PRINT TAB(22); "*** WINNER ***" : PRINT : PRINT : PRINT
- 1290 PRINT TAB(12); PL$(CO); ", YOUR WINNING ROLL WAS ";
- 1300 PRINT DI(1); DI(2); DI(3) : PRINT : PRINT : PRINT
- 1310 PRINT TAB(12); PL$(CO); " WINS WITH"; PS(CO)+TP; "POINTS" : PRINT : PRINT : PRINT
- 1320 PS(CO)=EG
- 1330 GOSUB 990
- 1340 A$="TRAP" : INPUT "ANOTHER GAME (Y OR N)"; A$
- 1350 IF LEFT$(A$,1)="Y" THEN RUN 90
- 1360 IF LEFT$(A$,1)="N" THEN PRINT CHR$(26) : RESET : END
- 1370 PRINT "NICE TRY "; : GOTO 1340
- 1380 '
- 1390 '
- 1400 '
- 1410 REM INSTRUCTIONS
- 1420 PRINT CHR$(26)
- 1430 PRINT TAB(20); "*** INSTRUCTIONS ***" : PRINT
- 1440 PRINT "THREE DICE ARE ROLLED, AND ARE SCORED AS FOLLOWS:" : PRINT
- 1450 PRINT " EACH '6' ROLLED SCORES 100 POINTS"
- 1460 PRINT " EACH '5' ROLLED SCORES 50 POINTS" : PRINT
- 1470 PRINT "FOR EXAMPLE: A ROLL OF '6 5 1' IS WORTH 150 POINTS - 100 POINTS"
- 1480 PRINT "FOR THE '6' AND 50 POINTS FOR THE '5'; (NOTHING FOR THE '1')." : PRINT
- 1490 PRINT "WHEN YOU ROLL 3 OF A KIND, THE SCORING IS AS FOLLOWS:" : PRINT
- 1500 PRINT " THREE 1'S - 100 POINTS"
- 1510 PRINT " THREE 2'S - 200 POINTS"
- 1520 PRINT " THREE 3'S - 300 POINTS"
- 1530 PRINT " THREE 4'S - 400 POINTS"
- 1540 PRINT " THREE 5'S + 500 POINTS"
- 1550 PRINT " THREE 6'S + 600 POINTS" : PRINT
- 1560 PRINT "GET THE IDEA...?" : PRINT
- 1570 PRINT "HIT RETURN MORE INSTRUCTIONS" : WAIT 0,1,1
- 1580 A$=INKEY$:IF A$="" THEN 1580
- 1590 PRINT "THE GAME CONSISTS OF THREE PHASES..." : PRINT
- 1600 PRINT TAB(12); "PHASE 1 - WHO GOES FIRST"
- 1610 PRINT TAB(12); "PHASE 2 - QUALIFYING (REACH 250 POINTS) PHASE"
- 1620 PRINT TAB(12); "PHASE 3 - WHO WINS (REACHES 1500 POINTS FIRST)" : PRINT
- 1630 PRINT "THE COMPUTER DECIDES WHO GOES FIRST, THEN THE COMPUTER WILL CONTINUE"
- 1640 PRINT "TO ROLL FOR EACH PLAYER UNTIL THAT PLAYER REACHES 250 POINTS OR UNTIL"
- 1650 PRINT "THAT PLAYER HAS A ROLL WITH NO '5' OR '6', AT WHICH POINT THE SCORE"
- 1660 PRINT "FOR THAT PLAYER IS RESET TO ZERO (UNLESS TRIPLES LESS THAN FIVE ARE"
- 1670 PRINT "THROWN - IN WHICH CASE THAT PLAYER'S SCORE MAY WELL GO BELOW ZERO)."
- 1680 PRINT "IN THIS PHASE (2) EACH PLAYER WILL EITHER REACH (OR EXCEED) 250 OR"
- 1690 PRINT "BE RESET TO ZERO (OR LESS). WHEN A PLAYER HAS QUALIFIED, PLAY PASSES"
- 1700 PRINT "TO NEXT PLAYER. AFTER QUALIFYING, COMPUTER ROLLS ONCE, IF THAT ROLL"
- 1710 PRINT "RESULTS IN SCORE LESS THAN 50, TURN WILL PASS TO NEXT PLAYER. IF THAT"
- 1720 PRINT "PLAYER SCORES 50 (OR MORE) POINTS, THEN THAT PLAYER CAN DECIDE WHETHER"
- 1730 PRINT "TO TAKE (AND KEEP) THE POINTS FROM THAT ROLL OR TO ROLL AGAIN IN HOPE"
- 1740 PRINT "OF GETTING MORE POINTS. ANY ROLL OF LESS THAN 50 POINTS WILL CANCEL"
- 1750 PRINT "ALL POINTS EARNED ON THAT TURN. FIRST PLAYER TO REACH 1500 WINS. IT"
- 1760 PRINT "IS ONLY NECESSARY TO 'QUALIFY' ONCE IN ANY GIVEN GAME, AND SCORING"
- 1770 PRINT "RELATED TO 'TRIPLES' IS IN EFFECT DURING ALL PHASES OF THE GAME."
- 1780 PRINT : PRINT "HIT RETURN TO PLAY" :
- 1790 A$=INKEY$:IF A$="" THEN 1790
- 1800 RETURN
-